using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Decisions.HL7.Message;
using DecisionsFramework;

namespace Decisions.HL7.Message
{
    public class SpecimenTypeAttribute:RuleAttribute
    {
        private Dictionary<HL7Version, string[]> validVersionCodes = new Dictionary<HL7Version, string[]>();
        private Dictionary<HL7Version, string[]> validVersionDescriptions = new Dictionary<HL7Version, string[]>();
        private Dictionary<HL7Version, HL7TableType> tableVersionTypes = new Dictionary<HL7Version, HL7TableType>();

        public SpecimenTypeAttribute()
        {
            // init the values for table version types
						tableVersionTypes[HL7Version.v25] = HL7TableType.HL7;
						tableVersionTypes[HL7Version.v251] = HL7TableType.HL7;
						tableVersionTypes[HL7Version.v26] = HL7TableType.User;
						tableVersionTypes[HL7Version.v27] = HL7TableType.HL7;
			
            
			// init the values for version codes
						validVersionCodes[HL7Version.v25] = new string[]{"ABS","PELVA","PERIA","RECTA","SCROA","SUBMA","SUBMX","TSTES","AIRS","ALL","AMP","GASAN","ASP","ETA","GASA","NGASP","TASP","TTRA","AUTP","BX","GSPEC","SKBP","CONE","BITE","CBITE","DBITE","HBITE","IBITE","RBITE","BLEB","BLIST","BBL","BPU","HBLUD","CSVR","FBLOOD","MBLD","WB","BOIL","BONE","BOWL","BRTH","BRSH","EBRUSH","BRUS","GASBR","BUB","BULLA","BRN","CALC","CARBU","CAT","CSITE","CTP","ANGI","ARTC","CVPT","ETTP","FOLEY","HEMAQ","HEMO","IDC","INTRD","IVCAT","MAHUR","SCLV","SPRP","SWGZ","VASTIP","VENT","GROSH","HIC","PORTA","SPRPB","TLC","CLIPP","COL","CNJT","LENS1","LENS2","CYST","BCYST","ICYST","PILOC","RENALC","DIA","DISCHG","DIV","DRN","HEV","GTUBE","GASD","ILEO","JP","JEJU","NASDR","NGAST","PND","DRNGP","RECT","SUMP","DRNG","EARW","EFFUS","ELT","AUTOC","ATTE","EFF","EEYE","EFOD","EISO","EOTH","ESOI","ESOS","SPS","STER","ENVIR","WWA","DEION","WWT","FAW","WWO","EWHI","EXUDTE","FLT","FIST","FLUID","FGA","CSMY","ACNFLD","FLU","CST","HYDC","IVFLD","JNTFLD","KIDFLD","LSAC","FLD","PCFL","RENC","FRS","SHUNF","SNV","GAST","FUR","GAS","EXG","IHG","GENV","GRAFT","POPGS","POPLG","GRANU","IMP","INFIL","INS","IUD","IT","KELOI","LAVG","LAVGG","LAVGP","LAVPG","LESN","ORL","PENIL","LIQO","LIQ","MASS","SMM","MUCOS","MUCUS","NEDL","NODUL","CYN","ORH","PACEM","PLAN","PLAS","PLB","PPP","PRP","POL","PROST","PSC","PUST","PUSFR","QC3","RES","SAL","FSCLP","CSCR","SECRE","NSECR","SER","ASERU","CSERU","PLEVS","TSERU","SHUNT","EXS","SITE","CVPS","INCI","NGS","NEPH","PIS","PDSIT","PDTS","PINS","POPLV","SHU","TRAC","SKN","TZANC","GSOL","ILLEG","OTH","UDENT","USPEC","SPRM","SPT","SPTC","SPTT","DCS","SPUTIN","SPUT1","SPUTSP","STONE","STL","SUP","SUTUR","TISS","TISU","ACNE","HERNI","SCAR","TRANS","ETTUB","GT","TUBES","IVTIP","TUMOR","DEC","UR","URT","URC","URINB","URINC","USCOP","URINM","URINN","URINP","RANDU","VITF","WRT","WASH","WASI","WAT","WEN","WICK","WORM","WND","WNDA","WNDD","WNDE","PUNCT"};
						validVersionCodes[HL7Version.v251] = new string[]{"ABS","PELVA","PERIA","RECTA","SCROA","SUBMA","SUBMX","TSTES","AIRS","ALL","AMP","GASAN","ASP","ETA","GASA","NGASP","TASP","TTRA","AUTP","BX","GSPEC","SKBP","CONE","BITE","CBITE","DBITE","HBITE","IBITE","RBITE","BLEB","BLIST","BBL","BPU","HBLUD","CSVR","FBLOOD","MBLD","WB","BOIL","BON","BOWL","BRTH","BRSH","EBRUSH","BRUS","GASBR","BUB","BULLA","BRN","CALC","CARBU","CAT","CSITE","CTP","ANGI","ARTC","CVPT","ETTP","FOLEY","HEMAQ","HEMO","IDC","INTRD","IVCAT","MAHUR","SCLV","SPRP","SWGZ","VASTIP","VENT","GROSH","HIC","PORTA","SPRPB","TLC","CLIPP","COL","CNJT","LENS1","LENS2","CYST","BCYST","ICYST","PILOC","RENALC","DIA","DISCHG","DIV","DRN","HEV","GTUBE","GASD","ILEO","JP","JEJU","NASDR","NGAST","PND","DRNGP","RECT","SUMP","DRNG","EARW","EFFUS","ELT","AUTOC","ATTE","EFF","EEYE","EFOD","EISO","EOTH","ESOI","ESOS","SPS","STER","ENVIR","WWA","DEION","WWT","FAW","WWO","EWHI","EXUDTE","FLT","FIST","FLUID","FGA","CSMY","ACNFLD","FLU","CST","HYDC","IVFLD","JNTFLD","KIDFLD","LSAC","FLD","PCFL","RENC","FRS","SHUNF","SNV","GAST","FUR","GAS","EXG","IHG","GENV","GRAFT","POPGS","POPLG","GRANU","IMP","INFIL","INS","IUD","IT","KELOI","LAVG","LAVGG","LAVGP","LAVPG","LESN","ORL","PENIL","LIQO","LIQ","MASS","SMM","MUCOS","MUCUS","NEDL","NODUL","CYN","ORH","PACEM","PLAN","PLAS","PLB","PPP","PRP","POL","PROST","PSC","PUS","PUST","PUSFR","QC3","RES","SAL","FSCLP","CSCR","SECRE","NSECR","SER","ASERU","CSERU","PLEVS","TSERU","SHUNT","EXS","SITE","CVPS","INCI","NGS","NEPH","PIS","PDSIT","PDTS","PINS","POPLV","SHU","TRAC","SKN","TZANC","GSOL","ILLEG","OTH","UDENT","USPEC","SPRM","SPT","SPTC","SPTT","DCS","SPUTIN","SPUT1","SPUTSP","STONE","STL","SUP","SUTUR","TISS","TISU","ACNE","HERNI","SCAR","TRANS","ETTUB","GT","TUBES","IVTIP","TUMOR","DEC","UR","URT","URC","URINB","URINC","USCOP","URINM","URINN","URINP","RANDU","VITF","VOM","WRT","WASH","WASI","WAT","WEN","WICK","WORM","WND","WNDA","WNDD","WNDE","PUNCT"};
						validVersionCodes[HL7Version.v26] = new string[]{"...","ABS","PELVA","PERIA","RECTA","SCROA","SUBMA","SUBMX","TSTES","AIRS","ALL","AMP","GASAN","ASP","ETA","GASA","NGASP","TASP","TTRA","AUTP","BX","GSPEC","SKBP","CONE","BITE","CBITE","DBITE","HBITE","IBITE","RBITE","BLEB","BLIST","BBL","BPU","HBLUD","CSVR","FBLOOD","MBLD","WB","BOIL","BON","BOWL","BRTH","BRSH","EBRUSH","BRUS","GASBR","BUB","BULLA","BRN","CALC","CARBU","CAT","CSITE","CTP","ANGI","ARTC","CVPT","ETTP","FOLEY","HEMAQ","HEMO","IDC","INTRD","IVCAT","MAHUR","SCLV","SPRP","SWGZ","VASTIP","VENT","GROSH","HIC","PORTA","SPRPB","TLC","CLIPP","COL","CNJT","LENS1","LENS2","CYST","BCYST","ICYST","PILOC","RENALC","DIA","DISCHG","DIV","DRN","HEV","GTUBE","GASD","ILEO","JP","JEJU","NASDR","NGAST","PND","DRNGP","RECT","SUMP","DRNG","EARW","EFFUS","ELT","AUTOC","ATTE","EFF","EEYE","EFOD","EISO","EOTH","ESOI","ESOS","SPS","STER","ENVIR","WWA","DEION","WWT","FAW","WWO","EWHI","EXUDTE","FLT","FIST","FLUID","FGA","CSMY","ACNFLD","FLU","CST","HYDC","IVFLD","JNTFLD","KIDFLD","LSAC","FLD","PCFL","RENC","FRS","SHUNF","SNV","GAST","FUR","GAS","EXG","IHG","GENV","GRAFT","POPGS","POPLG","GRANU","IMP","INFIL","INS","IUD","IT","KELOI","LAVG","LAVGG","LAVGP","LAVPG","LESN","ORL","PENIL","LIQO","LIQ","MASS","SMM","MUCOS","MUCUS","NEDL","NODUL","CYN","ORH","PACEM","PLAN","PLAS","PLB","PPP","PRP","POL","PROST","PSC","PUS","PUST","PUSFR","QC3","RES","SAL","FSCLP","CSCR","SECRE","NSECR","SER","ASERU","CSERU","PLEVS","TSERU","SHUNT","EXS","SITE","CVPS","INCI","NGS","NEPH","PIS","PDSIT","PDTS","PINS","POPLV","SHU","TRAC","SKN","TZANC","GSOL","ILLEG","OTH","UDENT","USPEC","SPRM","SPT","SPTC","SPTT","DCS","SPUTIN","SPUT1","SPUTSP","STONE","STL","SUP","SUTUR","TISS","TISU","ACNE","HERNI","SCAR","TRANS","ETTUB","GT","TUBES","IVTIP","TUMOR","DEC","UR","URT","URC","URINB","URINC","USCOP","URINM","URINN","URINP","RANDU","VITF","VOM","WRT","WASH","WASI","WAT","WEN","WICK","WORM","WND","WNDA","WNDD","WNDE","PUNCT"};
						validVersionCodes[HL7Version.v27] = new string[]{"ABS","PELVA","PERIA","RECTA","SCROA","SUBMA","SUBMX","TSTES","AIRS","ALL","AMP","GASAN","ASP","ETA","GASA","NGASP","TASP","TTRA","AUTP","BX","GSPEC","SKBP","CONE","BITE","CBITE","DBITE","HBITE","IBITE","RBITE","BLEB","BLIST","BBL","BPU","HBLUD","CSVR","FBLOOD","MBLD","WB","BOIL","BON","BOWL","BRTH","BRSH","EBRUSH","BRUS","GASBR","BUB","BULLA","BRN","CALC","CARBU","CAT","CSITE","CTP","ANGI","ARTC","CVPT","ETTP","FOLEY","HEMAQ","HEMO","IDC","INTRD","IVCAT","MAHUR","SCLV","SPRP","SWGZ","VASTIP","VENT","GROSH","HIC","PORTA","SPRPB","TLC","CLIPP","COL","CNJT","LENS1","LENS2","CYST","BCYST","ICYST","PILOC","RENALC","DIA","DISCHG","DIV","DRN","HEV","GTUBE","GASD","ILEO","JP","JEJU","NASDR","NGAST","PND","DRNGP","RECT","SUMP","DRNG","EARW","EFFUS","ELT","ATTE","AUTOA","AUTOC","EFF","EEYE","EFOD","EISO","EOTH","ESOI","ESOS","SPS","STER","ENVIR","WWA","DEION","WWT","FAW","WWO","EWHI","EXUDTE","FLT","FIST","FLUID","FGA","CSMY","ACNFLD","FLU","CST","HYDC","IVFLD","JNTFLD","KIDFLD","LSAC","FLD","PCFL","RENC","FRS","SHUNF","SNV","GAST","FUR","GAS","EXG","IHG","GENV","GRAFT","GRAFTS","POPGS","POPLG","GRANU","IMP","INFIL","INS","IUD","IT","KELOI","LAVG","LAVGG","LAVGP","LAVPG","LESN","ORL","PENIL","LIQO","LIQ","MASS","SMM","MUCOS","MUCUS","NEDL","NODUL","CYN","ORH","PACEM","PLAN","PLAS","PLB","PPP","PRP","POL","PROST","PSC","PUS","PUST","PUSFR","QC3","RES","SAL","FSCLP","CSCR","SECRE","NSECR","SER","ASERU","CSERU","PLEVS","TSERU","SHUNT","EXS","SITE","CVPS","INCI","NGS","NEPH","PIS","PDSIT","PDTS","PINS","POPLV","SHU","TRAC","SKN","TZANC","GSOL","ILLEG","OTH","UDENT","USPEC","SPRM","SPT","SPTC","SPTT","DCS","SPUTIN","SPUT1","SPUTSP","STONE","STL","SUP","SUTUR","TISS","TISU","ACNE","HERNI","SCAR","TRANS","ETTUB","GT","TUBES","IVTIP","TUMOR","DEC","UR","URT","URC","URINB","URINC","USCOP","URINM","URINN","URINP","RANDU","VITF","VOM","WRT","WASH","WASI","WAT","WEN","WICK","WORM","WND","WNDA","WNDD","WNDE","PUNCT"};
			
			// init the values for version descriptions
						validVersionDescriptions[HL7Version.v25] = new string[]{"Abscess","Abscess, Pelvic","Abscess, Perianal","Abscess, Rectal","Abscess, Scrotal","Abscess, Submandibular","Abscess, Submaxillary","Abscess, Testicular","Air Sample","Allograft","Amputation","Antrum, Gastric","Aspirate","Aspirate,  Endotrach","Aspirate, Gastric","Aspirate, Nasogastric","Aspirate, Tracheal","Aspirate, Transtracheal","Autopsy","Biopsy","Biopsy, Gastric","Biopsy, Skin","Biospy, Cone","Bite","Bite, Cat","Bite, Dog","Bite, Human","Bite, Insect","Bite, Reptile","Bleb","Blister","Blood Bag","Blood product unit","Blood, Autopsy","Blood, Cell Saver","Blood, Fetal","Blood, Menstrual","Blood, Whole","Boil","Bone","Bowel contents","Brwath (use EXHLD)","Brush","Brush, Esophageal","Brushing","Brushing, Gastric","Bubo","Bulla/Bullae","Burn","Caculus (=Stone)","Carbuncle","Catheter","Catheter Insertion Site","Catheter tip","Catheter Tip, Angio","Catheter Tip, Arterial","Catheter Tip, CVP","Catheter Tip, Endotracheal","Catheter Tip, Foley","Catheter Tip, Hemaquit","Catheter Tip, Hemovac","Catheter Tip, Indwelling","Catheter Tip, Introducer","Catheter Tip, IV","Catheter Tip, Makurkour","Catheter Tip, Subclavian","Catheter Tip, Suprapubic","Catheter Tip, Swan Gantz","Catheter Tip, Vas","Catheter Tip, Ventricular","Catheter, Groshong","Catheter, Hickman","Catheter, Porta","Cathether Tip, Suprapubic","Cathether Tip, Triple Lumen","Clippings","Colostrum","Conjunctiva","Contact Lens","Contact Lens Case","Cyst","Cyst, Baker's","Cyst, Inclusion","Cyst, Pilonidal","Cyst, Renal","Dialysate","Discharge","Diverticulum","Drain","Drain, Hemovac","Drainage Tube, Drainage (Gastrostomy)","Drainage, Gastric","Drainage, Ileostomy","Drainage, Jackson Pratt","Drainage, Jejunal","Drainage, Nasal","Drainage, Nasogastric","Drainage, Penile","Drainage, Penrose","Drainage, Rectal","Drainage, Sump","Drainage, Tube","Ear wax (cerumen)","Effusion","Electrode","Environment, Attest","Environmental, Autoclave Ampule","Environmental, Effluent","Environmental, Eye Wash","Environmental, Food","Environmental, Isolette","Environmental, Other Substance","Environmental, Soil","Environmental, Solution (Sterile)","Environmental, Spore Strip","Environmental, Sterrad","Environmental, Unidentified Substance","Environmental, Water","Environmental, Water  (Deionized)","Environmental, Water  (Tap)","Environmental, Water  (Well)","Environmental, Water (Ocean)","Environmental, Whirlpool","Exudate","Filter","Fistula","Fluid","Fluid,  Abdomen","Fluid,  Cystostomy Tube","Fluid, Acne","Fluid, Body unsp","Fluid, Cyst","Fluid, Hydrocele","Fluid, IV","Fluid, Joint","Fluid, Kidney","Fluid, Lumbar Sac","Fluid, Other","Fluid, Pericardial","Fluid, Renal Cyst","Fluid, Respiratory","Fluid, Shunt","Fluid, synovial (Joint fluid)","Fluid/contents, Gastric","Furuncle","Gas","Gas, exhaled (=breath)","Gas, inhaled","Genital vaginal","Graft","Graft Site, Popliteal","Graft, Popliteal","Granuloma","Implant","Infiltrate","Insect","Intrauterine Device","Intubation tube","Lavage","Lavage, Bronhial","Lavage, Gastric","Lavage, Peritoneal","Lavage, Pre-Bronch","Lesion","Lesion, Oral","Lesion, Penile","Liquid, Other","Liquid, Unspecified","Mass","Mass, Sub-Mandibular","Mucosa","Mucus","Needle","Nodule(s)","Nodule, Cystic","Other","Pacemaker","Plant Material","Plasma","Plasma bag","Plasma, Platelet poor","Plasma, Platelet rich","Polyps","Prosthetic Device","Pseudocyst","Pus","Pustule","Quality Control","Respiratory","Saliva","Scalp, Fetal","Scratch, Cat","Secretion(s)","Secretion, Nasal","Serum","Serum, Acute","Serum, Convalescent","Serum, Peak Level","Serum, Trough","Shunt","Shunt, External","Site","Site, CVP","Site, Incision/Surgical","Site, Naso/Gastric","Site, Nephrostomy","Site, Pacemaker Insetion","Site, Peritoneal Dialysis","Site, Peritoneal Dialysis Tunnel","Site, Pin","Site, Popliteal Vein","Site, Shunt","Site, Tracheostomy","Skin","Smear, Tzanck","Solution, Gastrostomy","Source of Specimen Is Illegible","Source, Other","Source, Unidentified","Source, Unspecified","Spermatozoa","Sputum","Sputum - coughed","Sputum - tracheal aspirate","Sputum, Deep Cough","Sputum, Inducted","Sputum, Simulated","Sputum, Spontaneous","Stone, Kidney","Stool - Fecal","Suprapubic Tap","Suture","Tissue","Tissue ulcer","Tissue, Acne","Tissue, Herniated","Tissue, Keloid (Scar)","Transudate","Tube, Endotracheal","Tube, Gastric","Tubes","Tubing Tip, IV","Tumor","Ulcer, Decubitus","Urine","Urine catheter","Urine clean catch","Urine, Bladder Washings","Urine, Catheterized","Urine, Cystoscopy","Urine, Midstream","Urine, Nephrostomy","Urine, Pedibag","Urine, Random","Vitreous Fluid","Wart","Wash","Washing, e.g. bronchial washing","Water","Wen","Wick","Worm","Wound","Wound abscess","Wound drainage","Wound exudate","Wound, Puncture"};
						validVersionDescriptions[HL7Version.v251] = new string[]{"Abscess","Abscess, Pelvic","Abscess, Perianal","Abscess, Rectal","Abscess, Scrotal","Abscess, Submandibular","Abscess, Submaxillary","Abscess, Testicular","Air Sample","Allograft","Amputation","Antrum, Gastric","Aspirate","Aspirate,  Endotrach","Aspirate, Gastric","Aspirate, Nasogastric","Aspirate, Tracheal","Aspirate, Transtracheal","Autopsy","Biopsy","Biopsy, Gastric","Biopsy, Skin","Biospy, Cone","Bite","Bite, Cat","Bite, Dog","Bite, Human","Bite, Insect","Bite, Reptile","Bleb","Blister","Blood bag","Blood product unit","Blood, Autopsy","Blood, Cell Saver","Blood, Fetal","Blood, Menstrual","Blood, Whole","Boil","Bone","Bowel contents","Breath (use EXHLD)","Brush","Brush, Esophageal","Brushing","Brushing, Gastric","Bubo","Bulla/Bullae","Burn","Calculus (=Stone)","Carbuncle","Catheter","Catheter Insertion Site","Catheter tip","Catheter Tip, Angio","Catheter Tip, Arterial","Catheter Tip, CVP","Catheter Tip, Endotracheal","Catheter Tip, Foley","Catheter Tip, Hemaquit","Catheter Tip, Hemovac","Catheter Tip, Indwelling","Catheter Tip, Introducer","Catheter Tip, IV","Catheter Tip, Makurkour","Catheter Tip, Subclavian","Catheter Tip, Suprapubic","Catheter Tip, Swan Gantz","Catheter Tip, Vas","Catheter Tip, Ventricular","Catheter, Groshong","Catheter, Hickman","Catheter, Porta","Cathether Tip, Suprapubic","Cathether Tip, Triple Lumen","Clippings","Colostrum","Conjunctiva","Contact Lens","Contact Lens Case","Cyst","Cyst, Baker's","Cyst, Inclusion","Cyst, Pilonidal","Cyst, Renal","Dialysate","Discharge","Diverticulum","Drain","Drain, Hemovac","Drainage Tube, Drainage (Gastrostomy)","Drainage, Gastric","Drainage, Ileostomy","Drainage, Jackson Pratt","Drainage, Jejunal","Drainage, Nasal","Drainage, Nasogastric","Drainage, Penile","Drainage, Penrose","Drainage, Rectal","Drainage, Sump","Drainage, Tube","Ear wax (cerumen)","Effusion","Electrode","Environment, Attest","Environmental, Autoclave Ampule","Environmental, Effluent","Environmental, Eye Wash","Environmental, Food","Environmental, Isolette","Environmental, Other Substance","Environmental, Soil","Environmental, Solution (Sterile)","Environmental, Spore Strip","Environmental, Sterrad","Environmental, Unidentified Substance","Environmental, Water","Environmental, Water  (Deionized)","Environmental, Water  (Tap)","Environmental, Water  (Well)","Environmental, Water (Ocean)","Environmental, Whirlpool","Exudate","Filter","Fistula","Fluid","Fluid,  Abdomen","Fluid,  Cystostomy Tube","Fluid, Acne","Fluid, Body unsp","Fluid, Cyst","Fluid, Hydrocele","Fluid, IV","Fluid, Joint","Fluid, Kidney","Fluid, Lumbar Sac","Fluid, Other","Fluid, Pericardial","Fluid, Renal Cyst","Fluid, Respiratory","Fluid, Shunt","Fluid, synovial (Joint fluid)","Fluid/contents, Gastric","Furuncle","Gas","Gas, exhaled (=breath)","Gas, Inhaled","Genital vaginal","Graft","Graft Site, Popliteal","Graft, Popliteal","Granuloma","Implant","Infiltrate","Insect","Intrauterine Device","Intubation tube","Lavage","Lavage, Bronhial","Lavage, Gastric","Lavage, Peritoneal","Lavage, Pre-Bronch","Lesion","Lesion, Oral","Lesion, Penile","Liquid, Other","Liquid, Unspecified","Mass","Mass, Sub-Mandibular","Mucosa","Mucus","Needle","Nodule(s)","Nodule, Cystic","Other","Pacemaker","Plant Material","Plasma","Plasma bag","Plasma, Platelet poor","Plasma, Platelet rich","Polyps","Prosthetic Device","Pseudocyst","Pus","Pus","Pustule","Quality Control","Respiratory","Saliva","Scalp, Fetal","Scratch, Cat","Secretion(s)","Secretion, Nasal","Serum","Serum, Acute","Serum, Convalescent","Serum, Peak Level","Serum, Trough","Shunt","Shunt, External","Site","Site, CVP","Site, Incision/Surgical","Site, Naso/Gastric","Site, Nephrostomy","Site, Pacemaker Insetion","Site, Peritoneal Dialysis","Site, Peritoneal Dialysis Tunnel","Site, Pin","Site, Popliteal Vein","Site, Shunt","Site, Tracheostomy","Skin","Smear, Tzanck","Solution, Gastrostomy","Source of Specimen Is Illegible","Source, Other","Source, Unidentified","Source, Unspecified","Spermatozoa","Sputum","Sputum - coughed","Sputum - tracheal aspirate","Sputum, Deep Cough","Sputum, Inducted","Sputum, Simulated","Sputum, Spontaneous","Stone, Kidney","Stool = Fecal","Suprapubic Tap","Suture","Tissue","Tissue ulcer","Tissue, Acne","Tissue, Herniated","Tissue, Keloid (Scar)","Transudate","Tube, Endotracheal","Tube, Gastric","Tubes","Tubing Tip, IV","Tumor","Ulcer, Decubitus","Urine","Urine catheter","Urine clean catch","Urine, Bladder Washings","Urine, Catheterized","Urine, Cystoscopy","Urine, Midstream","Urine, Nephrostomy","Urine, Pedibag","Urine, Random","Vitreous Fluid","Vomitus","Wart","Wash","Washing, e.g. bronchial washing","Water","Wen","Wick","Worm","Wound","Wound abscess","Wound drainage","Wound exudate","Wound, Puncture"};
						validVersionDescriptions[HL7Version.v26] = new string[]{"No suggested values","Abscess","Abscess, Pelvic","Abscess, Perianal","Abscess, Rectal","Abscess, Scrotal","Abscess, Submandibular","Abscess, Submaxillary","Abscess, Testicular","Air Sample","Allograft","Amputation","Antrum, Gastric","Aspirate","Aspirate,  Endotrach","Aspirate, Gastric","Aspirate, Nasogastric","Aspirate, Tracheal","Aspirate, Transtracheal","Autopsy","Biopsy","Biopsy, Gastric","Biopsy, Skin","Biospy, Cone","Bite","Bite, Cat","Bite, Dog","Bite, Human","Bite, Insect","Bite, Reptile","Bleb","Blister","Blood bag","Blood product unit","Blood, Autopsy","Blood, Cell Saver","Blood, Fetal","Blood, Menstrual","Blood, Whole","Boil","Bone","Bowel contents","Breath (use EXHLD)","Brush","Brush, Esophageal","Brushing","Brushing, Gastric","Bubo","Bulla/Bullae","Burn","Calculus (=Stone)","Carbuncle","Catheter","Catheter Insertion Site","Catheter tip","Catheter Tip, Angio","Catheter Tip, Arterial","Catheter Tip, CVP","Catheter Tip, Endotracheal","Catheter Tip, Foley","Catheter Tip, Hemaquit","Catheter Tip, Hemovac","Catheter Tip, Indwelling","Catheter Tip, Introducer","Catheter Tip, IV","Catheter Tip, Makurkour","Catheter Tip, Subclavian","Catheter Tip, Suprapubic","Catheter Tip, Swan Gantz","Catheter Tip, Vas","Catheter Tip, Ventricular","Catheter, Groshong","Catheter, Hickman","Catheter, Porta","Cathether Tip, Suprapubic","Cathether Tip, Triple Lumen","Clippings","Colostrum","Conjunctiva","Contact Lens","Contact Lens Case","Cyst","Cyst, Baker's","Cyst, Inclusion","Cyst, Pilonidal","Cyst, Renal","Dialysate","Discharge","Diverticulum","Drain","Drain, Hemovac","Drainage Tube, Drainage (Gastrostomy)","Drainage, Gastric","Drainage, Ileostomy","Drainage, Jackson Pratt","Drainage, Jejunal","Drainage, Nasal","Drainage, Nasogastric","Drainage, Penile","Drainage, Penrose","Drainage, Rectal","Drainage, Sump","Drainage, Tube","Ear wax (cerumen)","Effusion","Electrode","Environment, Attest","Environmental, Autoclave Ampule","Environmental, Effluent","Environmental, Eye Wash","Environmental, Food","Environmental, Isolette","Environmental, Other Substance","Environmental, Soil","Environmental, Solution (Sterile)","Environmental, Spore Strip","Environmental, Sterrad","Environmental, Unidentified Substance","Environmental, Water","Environmental, Water  (Deionized)","Environmental, Water  (Tap)","Environmental, Water  (Well)","Environmental, Water (Ocean)","Environmental, Whirlpool","Exudate","Filter","Fistula","Fluid","Fluid,  Abdomen","Fluid,  Cystostomy Tube","Fluid, Acne","Fluid, Body unsp","Fluid, Cyst","Fluid, Hydrocele","Fluid, IV","Fluid, Joint","Fluid, Kidney","Fluid, Lumbar Sac","Fluid, Other","Fluid, Pericardial","Fluid, Renal Cyst","Fluid, Respiratory","Fluid, Shunt","Fluid, synovial (Joint fluid)","Fluid/contents, Gastric","Furuncle","Gas","Gas, exhaled (=breath)","Gas, Inhaled","Genital vaginal","Graft","Graft Site, Popliteal","Graft, Popliteal","Granuloma","Implant","Infiltrate","Insect","Intrauterine Device","Intubation tube","Lavage","Lavage, Bronhial","Lavage, Gastric","Lavage, Peritoneal","Lavage, Pre-Bronch","Lesion","Lesion, Oral","Lesion, Penile","Liquid, Other","Liquid, Unspecified","Mass","Mass, Sub-Mandibular","Mucosa","Mucus","Needle","Nodule(s)","Nodule, Cystic","Other","Pacemaker","Plant Material","Plasma","Plasma bag","Plasma, Platelet poor","Plasma, Platelet rich","Polyps","Prosthetic Device","Pseudocyst","Pus","Pus","Pustule","Quality Control","Respiratory","Saliva","Scalp, Fetal","Scratch, Cat","Secretion(s)","Secretion, Nasal","Serum","Serum, Acute","Serum, Convalescent","Serum, Peak Level","Serum, Trough","Shunt","Shunt, External","Site","Site, CVP","Site, Incision/Surgical","Site, Naso/Gastric","Site, Nephrostomy","Site, Pacemaker Insetion","Site, Peritoneal Dialysis","Site, Peritoneal Dialysis Tunnel","Site, Pin","Site, Popliteal Vein","Site, Shunt","Site, Tracheostomy","Skin","Smear, Tzanck","Solution, Gastrostomy","Source of Specimen Is Illegible","Source, Other","Source, Unidentified","Source, Unspecified","Spermatozoa","Sputum","Sputum - coughed","Sputum - tracheal aspirate","Sputum, Deep Cough","Sputum, Inducted","Sputum, Simulated","Sputum, Spontaneous","Stone, Kidney","Stool = Fecal","Suprapubic Tap","Suture","Tissue","Tissue ulcer","Tissue, Acne","Tissue, Herniated","Tissue, Keloid (Scar)","Transudate","Tube, Endotracheal","Tube, Gastric","Tubes","Tubing Tip, IV","Tumor","Ulcer, Decubitus","Urine","Urine catheter","Urine clean catch","Urine, Bladder Washings","Urine, Catheterized","Urine, Cystoscopy","Urine, Midstream","Urine, Nephrostomy","Urine, Pedibag","Urine, Random","Vitreous Fluid","Vomitus","Wart","Wash","Washing, e.g. bronchial washing","Water","Wen","Wick","Worm","Wound","Wound abscess","Wound drainage","Wound exudate","Wound, Puncture"};
						validVersionDescriptions[HL7Version.v27] = new string[]{"Abscess","Abscess, Pelvic","Abscess, Perianal","Abscess, Rectal","Abscess, Scrotal","Abscess, Submandibular","Abscess, Submaxillary","Abscess, Testicular","Air Sample","Allograft","Amputation","Antrum, Gastric","Aspirate","Aspirate,  Endotrach","Aspirate, Gastric","Aspirate, Nasogastric","Aspirate, Tracheal","Aspirate, Transtracheal","Autopsy","Biopsy","Biopsy, Gastric","Biopsy, Skin","Biospy, Cone","Bite","Bite, Cat","Bite, Dog","Bite, Human","Bite, Insect","Bite, Reptile","Bleb","Blister","Blood bag","Blood product unit","Blood, Autopsy","Blood, Cell Saver","Blood, Fetal","Blood, Menstrual","Blood, Whole","Boil","Bone","Bowel contents","Breath (use EXHLD)","Brush","Brush, Esophageal","Brushing","Brushing, Gastric","Bubo","Bulla/Bullae","Burn","Calculus (=Stone)","Carbuncle","Catheter","Catheter Insertion Site","Catheter tip","Catheter Tip, Angio","Catheter Tip, Arterial","Catheter Tip, CVP","Catheter Tip, Endotracheal","Catheter Tip, Foley","Catheter Tip, Hemaquit","Catheter Tip, Hemovac","Catheter Tip, Indwelling","Catheter Tip, Introducer","Catheter Tip, IV","Catheter Tip, Makurkour","Catheter Tip, Subclavian","Catheter Tip, Suprapubic","Catheter Tip, Swan Gantz","Catheter Tip, Vas","Catheter Tip, Ventricular","Catheter, Groshong","Catheter, Hickman","Catheter, Porta","Cathether Tip, Suprapubic","Cathether Tip, Triple Lumen","Clippings","Colostrum","Conjunctiva","Contact Lens","Contact Lens Case","Cyst","Cyst, Baker's","Cyst, Inclusion","Cyst, Pilonidal","Cyst, Renal","Dialysate","Discharge","Diverticulum","Drain","Drain, Hemovac","Drainage Tube, Drainage (Gastrostomy)","Drainage, Gastric","Drainage, Ileostomy","Drainage, Jackson Pratt","Drainage, Jejunal","Drainage, Nasal","Drainage, Nasogastric","Drainage, Penile","Drainage, Penrose","Drainage, Rectal","Drainage, Sump","Drainage, Tube","Ear wax (cerumen)","Effusion","Electrode","Environment, Attest","Environmental, Autoclave Ampule","Environmental, Autoclave Capsule","Environmental, Effluent","Environmental, Eye Wash","Environmental, Food","Environmental, Isolette","Environmental, Other Substance","Environmental, Soil","Environmental, Solution (Sterile)","Environmental, Spore Strip","Environmental, Sterrad","Environmental, Unidentified Substance","Environmental, Water","Environmental, Water  (Deionized)","Environmental, Water  (Tap)","Environmental, Water  (Well)","Environmental, Water (Ocean)","Environmental, Whirlpool","Exudate","Filter","Fistula","Fluid","Fluid,  Abdomen","Fluid,  Cystostomy Tube","Fluid, Acne","Fluid, Body unsp","Fluid, Cyst","Fluid, Hydrocele","Fluid, IV","Fluid, Joint","Fluid, Kidney","Fluid, Lumbar Sac","Fluid, Other","Fluid, Pericardial","Fluid, Renal Cyst","Fluid, Respiratory","Fluid, Shunt","Fluid, synovial (Joint fluid)","Fluid/contents, Gastric","Furuncle","Gas","Gas, exhaled (=breath)","Gas, Inhaled","Genital vaginal","Graft","Graft Site","Graft Site, Popliteal","Graft, Popliteal","Granuloma","Implant","Infiltrate","Insect","Intrauterine Device","Intubation tube","Lavage","Lavage, Bronhial","Lavage, Gastric","Lavage, Peritoneal","Lavage, Pre-Bronch","Lesion","Lesion, Oral","Lesion, Penile","Liquid, Other","Liquid, Unspecified","Mass","Mass, Sub-Mandibular","Mucosa","Mucus","Needle","Nodule(s)","Nodule, Cystic","Other","Pacemaker","Plant Material","Plasma","Plasma bag","Plasma, Platelet poor","Plasma, Platelet rich","Polyps","Prosthetic Device","Pseudocyst","Pus","Pus","Pustule","Quality Control","Respiratory","Saliva","Scalp, Fetal","Scratch, Cat","Secretion(s)","Secretion, Nasal","Serum","Serum, Acute","Serum, Convalescent","Serum, Peak Level","Serum, Trough","Shunt","Shunt, External","Site","Site, CVP","Site, Incision/Surgical","Site, Naso/Gastric","Site, Nephrostomy","Site, Pacemaker Insetion","Site, Peritoneal Dialysis","Site, Peritoneal Dialysis Tunnel","Site, Pin","Site, Popliteal Vein","Site, Shunt","Site, Tracheostomy","Skin","Smear, Tzanck","Solution, Gastrostomy","Source of Specimen Is Illegible","Source, Other","Source, Unidentified","Source, Unspecified","Spermatozoa","Sputum","Sputum - coughed","Sputum - tracheal aspirate","Sputum, Deep Cough","Sputum, Inducted","Sputum, Simulated","Sputum, Spontaneous","Stone, Kidney","Stool = Fecal","Suprapubic Tap","Suture","Tissue","Tissue ulcer","Tissue, Acne","Tissue, Herniated","Tissue, Keloid (Scar)","Transudate","Tube, Endotracheal","Tube, Gastric","Tubes","Tubing Tip, IV","Tumor","Ulcer, Decubitus","Urine","Urine catheter","Urine clean catch","Urine, Bladder Washings","Urine, Catheterized","Urine, Cystoscopy","Urine, Midstream","Urine, Nephrostomy","Urine, Pedibag","Urine, Random","Vitreous Fluid","Vomitus","Wart","Wash","Washing, e.g. bronchial washing","Water","Wen","Wick","Worm","Wound","Wound abscess","Wound drainage","Wound exudate","Wound, Puncture"};
			            

        }

        
        public override ValidationIssue[] RunRule(string name, object owningObject, object value)
        {
            //todo: check if the value is valid in the current version
            //if the value is not valid in the current version, add it as a validation issue


            return new ValidationIssue[0];
        }
    }
}
